
-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, and Azure
-- --------------------------------------------------
-- Date Created: 08/17/2011 13:37:39
-- Generated from EDMX file: C:\Users\Luis\Documents\Visual Studio 2010\Projects\Atacadao\AtacadaoDB\Atacadao.DB\AtacadaoDB.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [AtacadaoVirtual];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO

-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[FK_CategoriaProdutoCategoriaProduto]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[CategoriasProdutos] DROP CONSTRAINT [FK_CategoriaProdutoCategoriaProduto];
GO
IF OBJECT_ID(N'[dbo].[FK_ProdutoCategoriaProduto]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Produtos] DROP CONSTRAINT [FK_ProdutoCategoriaProduto];
GO
IF OBJECT_ID(N'[dbo].[FK_TelefoneEmpresa]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Telefones] DROP CONSTRAINT [FK_TelefoneEmpresa];
GO
IF OBJECT_ID(N'[dbo].[FK_PessoaTelefone]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Telefones] DROP CONSTRAINT [FK_PessoaTelefone];
GO
IF OBJECT_ID(N'[dbo].[FK_UFCidade]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Cidades] DROP CONSTRAINT [FK_UFCidade];
GO
IF OBJECT_ID(N'[dbo].[FK_CidadeEndereco]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Enderecos] DROP CONSTRAINT [FK_CidadeEndereco];
GO
IF OBJECT_ID(N'[dbo].[FK_EnderecoEmpresa]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Enderecos] DROP CONSTRAINT [FK_EnderecoEmpresa];
GO
IF OBJECT_ID(N'[dbo].[FK_PaisUF]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[UFs] DROP CONSTRAINT [FK_PaisUF];
GO
IF OBJECT_ID(N'[dbo].[FK_TipoEnderecoEndereco]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Enderecos] DROP CONSTRAINT [FK_TipoEnderecoEndereco];
GO
IF OBJECT_ID(N'[dbo].[FK_TipoTelefoneTelefone]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Telefones] DROP CONSTRAINT [FK_TipoTelefoneTelefone];
GO
IF OBJECT_ID(N'[dbo].[FK_UnidadeMedidaProduto]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Produtos] DROP CONSTRAINT [FK_UnidadeMedidaProduto];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaProduto_Empresa]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[EmpresaProduto] DROP CONSTRAINT [FK_EmpresaProduto_Empresa];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaProduto_Produto]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[EmpresaProduto] DROP CONSTRAINT [FK_EmpresaProduto_Produto];
GO
IF OBJECT_ID(N'[dbo].[FK_ProdutoValorVenda]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[ValoresVenda] DROP CONSTRAINT [FK_ProdutoValorVenda];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaValorVenda]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[ValoresVenda] DROP CONSTRAINT [FK_EmpresaValorVenda];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaCotacao]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Cotacoes] DROP CONSTRAINT [FK_EmpresaCotacao];
GO
IF OBJECT_ID(N'[dbo].[FK_ProdutoCotacao]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Cotacoes] DROP CONSTRAINT [FK_ProdutoCotacao];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaProposta]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Propostas] DROP CONSTRAINT [FK_EmpresaProposta];
GO
IF OBJECT_ID(N'[dbo].[FK_CotacaoProposta]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Propostas] DROP CONSTRAINT [FK_CotacaoProposta];
GO
IF OBJECT_ID(N'[dbo].[FK_CotacaoVenda]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Vendas] DROP CONSTRAINT [FK_CotacaoVenda];
GO
IF OBJECT_ID(N'[dbo].[FK_RepresentanteVenda]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Vendas] DROP CONSTRAINT [FK_RepresentanteVenda];
GO
IF OBJECT_ID(N'[dbo].[FK_RepresentanteProposta]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Propostas] DROP CONSTRAINT [FK_RepresentanteProposta];
GO
IF OBJECT_ID(N'[dbo].[FK_RepresentanteCotacao]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Cotacoes] DROP CONSTRAINT [FK_RepresentanteCotacao];
GO
IF OBJECT_ID(N'[dbo].[FK_PessoaRepresentante]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Representantes] DROP CONSTRAINT [FK_PessoaRepresentante];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaRepresentante]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Representantes] DROP CONSTRAINT [FK_EmpresaRepresentante];
GO
IF OBJECT_ID(N'[dbo].[FK_EnderecoVenda]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Vendas] DROP CONSTRAINT [FK_EnderecoVenda];
GO
IF OBJECT_ID(N'[dbo].[FK_CotacaoMensagemCotacao]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[MensagensCotacoes] DROP CONSTRAINT [FK_CotacaoMensagemCotacao];
GO
IF OBJECT_ID(N'[dbo].[FK_EntregaCotacao]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Cotacoes] DROP CONSTRAINT [FK_EntregaCotacao];
GO
IF OBJECT_ID(N'[dbo].[FK_TransportadoraEntrega]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Entregas] DROP CONSTRAINT [FK_TransportadoraEntrega];
GO
IF OBJECT_ID(N'[dbo].[FK_EmpresaMensagemEmpresa]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[MensagensEmpresas] DROP CONSTRAINT [FK_EmpresaMensagemEmpresa];
GO
IF OBJECT_ID(N'[dbo].[FK_PessoaMensagemCotacao]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[MensagensCotacoes] DROP CONSTRAINT [FK_PessoaMensagemCotacao];
GO
IF OBJECT_ID(N'[dbo].[FK_PessoaMensagemCotacao1]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[MensagensCotacoes] DROP CONSTRAINT [FK_PessoaMensagemCotacao1];
GO
IF OBJECT_ID(N'[dbo].[FK_TipoTesteTeste]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Testes] DROP CONSTRAINT [FK_TipoTesteTeste];
GO
IF OBJECT_ID(N'[dbo].[FK_Transportadora_inherits_Empresa]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Empresas_Transportadora] DROP CONSTRAINT [FK_Transportadora_inherits_Empresa];
GO

-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[Produtos]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Produtos];
GO
IF OBJECT_ID(N'[dbo].[CategoriasProdutos]', 'U') IS NOT NULL
    DROP TABLE [dbo].[CategoriasProdutos];
GO
IF OBJECT_ID(N'[dbo].[Empresas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Empresas];
GO
IF OBJECT_ID(N'[dbo].[Pessoas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Pessoas];
GO
IF OBJECT_ID(N'[dbo].[Telefones]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Telefones];
GO
IF OBJECT_ID(N'[dbo].[Enderecos]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Enderecos];
GO
IF OBJECT_ID(N'[dbo].[UFs]', 'U') IS NOT NULL
    DROP TABLE [dbo].[UFs];
GO
IF OBJECT_ID(N'[dbo].[Cidades]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Cidades];
GO
IF OBJECT_ID(N'[dbo].[Pais]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Pais];
GO
IF OBJECT_ID(N'[dbo].[TiposEnderecos]', 'U') IS NOT NULL
    DROP TABLE [dbo].[TiposEnderecos];
GO
IF OBJECT_ID(N'[dbo].[TiposTelefone]', 'U') IS NOT NULL
    DROP TABLE [dbo].[TiposTelefone];
GO
IF OBJECT_ID(N'[dbo].[UnidadesMedidas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[UnidadesMedidas];
GO
IF OBJECT_ID(N'[dbo].[ValoresVenda]', 'U') IS NOT NULL
    DROP TABLE [dbo].[ValoresVenda];
GO
IF OBJECT_ID(N'[dbo].[Cotacoes]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Cotacoes];
GO
IF OBJECT_ID(N'[dbo].[Propostas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Propostas];
GO
IF OBJECT_ID(N'[dbo].[Vendas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Vendas];
GO
IF OBJECT_ID(N'[dbo].[Representantes]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Representantes];
GO
IF OBJECT_ID(N'[dbo].[MensagensCotacoes]', 'U') IS NOT NULL
    DROP TABLE [dbo].[MensagensCotacoes];
GO
IF OBJECT_ID(N'[dbo].[Entregas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Entregas];
GO
IF OBJECT_ID(N'[dbo].[MensagensEmpresas]', 'U') IS NOT NULL
    DROP TABLE [dbo].[MensagensEmpresas];
GO
IF OBJECT_ID(N'[dbo].[Testes]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Testes];
GO
IF OBJECT_ID(N'[dbo].[TipoTestes]', 'U') IS NOT NULL
    DROP TABLE [dbo].[TipoTestes];
GO
IF OBJECT_ID(N'[dbo].[Empresas_Transportadora]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Empresas_Transportadora];
GO
IF OBJECT_ID(N'[dbo].[EmpresaProduto]', 'U') IS NOT NULL
    DROP TABLE [dbo].[EmpresaProduto];
GO

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

-- Creating table 'Produtos'
CREATE TABLE [dbo].[Produtos] (
    [CodigoProduto] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(100)  NOT NULL,
    [CodigoUnidadeMedida] int  NOT NULL,
    [Imagem] varbinary(max)  NULL,
    [CodigoCategoriaProduto] int  NOT NULL
);
GO

-- Creating table 'CategoriasProdutos'
CREATE TABLE [dbo].[CategoriasProdutos] (
    [CodigoCategoriaProdutos] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(50)  NOT NULL,
    [CodigoCategoriaPai] int  NULL,
    [Imagem] varbinary(max)  NULL
);
GO

-- Creating table 'Empresas'
CREATE TABLE [dbo].[Empresas] (
    [CodigoEmpresa] int IDENTITY(1,1) NOT NULL,
    [NomeFantasia] nvarchar(100)  NOT NULL,
    [RazaoSocial] nvarchar(100)  NOT NULL,
    [CNPJ] nchar(14)  NOT NULL,
    [Ativo] bit  NOT NULL,
    [Fornecedor] bit  NOT NULL,
    [Atacadista] bit  NOT NULL,
    [Apresentacao] nvarchar(400)  NOT NULL,
    [QualificacaoVendedor] tinyint  NOT NULL,
    [QualificacaoComprador] int  NOT NULL,
    [Imagem] varbinary(max)  NULL
);
GO

-- Creating table 'Pessoas'
CREATE TABLE [dbo].[Pessoas] (
    [CodigoPessoa] int IDENTITY(1,1) NOT NULL,
    [Nome] nvarchar(40)  NOT NULL,
    [CPF] nvarchar(11)  NOT NULL,
    [Senha] nvarchar(60)  NOT NULL,
    [Login] nvarchar(12)  NOT NULL
);
GO

-- Creating table 'Telefones'
CREATE TABLE [dbo].[Telefones] (
    [CodigoTelefone] int IDENTITY(1,1) NOT NULL,
    [Numero] nvarchar(12)  NOT NULL,
    [EmpresaCodigoEmpresa] int  NOT NULL,
    [CodigoPessoa] int  NOT NULL,
    [CodigoTiposTelefones] int  NOT NULL
);
GO

-- Creating table 'Enderecos'
CREATE TABLE [dbo].[Enderecos] (
    [CodigoEndereco] int IDENTITY(1,1) NOT NULL,
    [Principal] nvarchar(400)  NOT NULL,
    [Complelemento] nvarchar(400)  NULL,
    [Bairro] nvarchar(40)  NOT NULL,
    [CEP] nchar(8)  NOT NULL,
    [CodigoCidade] int  NOT NULL,
    [CodigoEmpresa] int  NOT NULL,
    [CodigoTipoEndereco] int  NOT NULL
);
GO

-- Creating table 'UFs'
CREATE TABLE [dbo].[UFs] (
    [CodigoUF] tinyint IDENTITY(1,1) NOT NULL,
    [Sigla] nchar(2)  NOT NULL,
    [Descricao] nvarchar(20)  NOT NULL,
    [CodigoPais] int  NOT NULL
);
GO

-- Creating table 'Cidades'
CREATE TABLE [dbo].[Cidades] (
    [CodigoCidade] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(100)  NOT NULL,
    [CodigoUF] tinyint  NOT NULL
);
GO

-- Creating table 'Pais'
CREATE TABLE [dbo].[Pais] (
    [CodigoPais] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(20)  NOT NULL
);
GO

-- Creating table 'TiposEnderecos'
CREATE TABLE [dbo].[TiposEnderecos] (
    [CodigoTipoEndereco] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(20)  NOT NULL
);
GO

-- Creating table 'TiposTelefone'
CREATE TABLE [dbo].[TiposTelefone] (
    [CodigoTiposTelefones] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(20)  NOT NULL
);
GO

-- Creating table 'UnidadesMedidas'
CREATE TABLE [dbo].[UnidadesMedidas] (
    [CodigoUnidadeMedida] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(20)  NOT NULL,
    [Sigla] nvarchar(4)  NOT NULL
);
GO

-- Creating table 'ValoresVenda'
CREATE TABLE [dbo].[ValoresVenda] (
    [DataInicio] datetime  NOT NULL,
    [DataFim] datetime  NOT NULL,
    [Valor] decimal(10,2)  NOT NULL,
    [CodigoProduto] int  NOT NULL,
    [CodigoEmpresa] int  NOT NULL,
    [Cancelado] bit  NOT NULL,
    [DataCancelamento] datetime  NOT NULL
);
GO

-- Creating table 'Cotacoes'
CREATE TABLE [dbo].[Cotacoes] (
    [CodigoCotacao] int IDENTITY(1,1) NOT NULL,
    [DataFinal] datetime  NOT NULL,
    [CodigoEmpresa] int  NOT NULL,
    [CodigoProduto] int  NOT NULL,
    [Cancelada] bit  NOT NULL,
    [CodigoPessoa] int  NOT NULL,
    [Peso] tinyint  NOT NULL,
    [DataInicial] datetime  NOT NULL,
    [EntregaCodigoEntrega] int  NOT NULL
);
GO

-- Creating table 'Propostas'
CREATE TABLE [dbo].[Propostas] (
    [CodigoEmpresa] int  NOT NULL,
    [CodigoCotacao] int  NOT NULL,
    [Valor] decimal(15,2)  NOT NULL,
    [CodigoPessoa] int  NOT NULL
);
GO

-- Creating table 'Vendas'
CREATE TABLE [dbo].[Vendas] (
    [DataVenda] datetime  NOT NULL,
    [Valor] decimal(15,2)  NOT NULL,
    [CodigoCotacao] int  NOT NULL,
    [CodigoPessoa] int  NOT NULL,
    [CodigoEnderecoEntrega] int  NOT NULL
);
GO

-- Creating table 'Representantes'
CREATE TABLE [dbo].[Representantes] (
    [CodigoPessoa] int  NOT NULL,
    [CodigoEmpresa] int  NOT NULL,
    [CodigoRepresentante] int IDENTITY(1,1) NOT NULL
);
GO

-- Creating table 'MensagensCotacoes'
CREATE TABLE [dbo].[MensagensCotacoes] (
    [CodigoMensagemCotacao] int IDENTITY(1,1) NOT NULL,
    [Mensagem] nvarchar(600)  NOT NULL,
    [CotacaoCodigoCotacao] int  NOT NULL,
    [Data] datetime  NOT NULL,
    [Publico] bit  NOT NULL,
    [CodigoPessoaComprador] int  NOT NULL,
    [CodigoPessoaAtacadista] int  NOT NULL
);
GO

-- Creating table 'Entregas'
CREATE TABLE [dbo].[Entregas] (
    [CodigoEntrega] int IDENTITY(1,1) NOT NULL,
    [DataEnvio] datetime  NOT NULL,
    [TransportadoraCodigoEmpresa] int  NOT NULL,
    [Observacao] nvarchar(600)  NOT NULL
);
GO

-- Creating table 'MensagensEmpresas'
CREATE TABLE [dbo].[MensagensEmpresas] (
    [CodigoMensagemEmpresa] int IDENTITY(1,1) NOT NULL,
    [Mensagem] nvarchar(4000)  NOT NULL,
    [CodigoEmpresa] int  NOT NULL,
    [Atacadao] bit  NOT NULL,
    [Data] datetime  NOT NULL
);
GO

-- Creating table 'Testes'
CREATE TABLE [dbo].[Testes] (
    [CodigoTeste] int IDENTITY(1,1) NOT NULL,
    [Nome] nvarchar(40)  NOT NULL,
    [Ordem] int  NOT NULL,
    [CodigoTipoTeste] int  NOT NULL,
    [Campo1] int  NOT NULL,
    [Campo2] int  NOT NULL,
    [Data] datetime  NOT NULL
);
GO

-- Creating table 'TipoTestes'
CREATE TABLE [dbo].[TipoTestes] (
    [CodigoTipoTeste] int IDENTITY(1,1) NOT NULL,
    [Descricao] nvarchar(40)  NOT NULL
);
GO

-- Creating table 'Empresas_Transportadora'
CREATE TABLE [dbo].[Empresas_Transportadora] (
    [CodigoEmpresa] int  NOT NULL
);
GO

-- Creating table 'EmpresaProduto'
CREATE TABLE [dbo].[EmpresaProduto] (
    [Empresas_CodigoEmpresa] int  NOT NULL,
    [Produtos_CodigoProduto] int  NOT NULL
);
GO

-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------

-- Creating primary key on [CodigoProduto] in table 'Produtos'
ALTER TABLE [dbo].[Produtos]
ADD CONSTRAINT [PK_Produtos]
    PRIMARY KEY CLUSTERED ([CodigoProduto] ASC);
GO

-- Creating primary key on [CodigoCategoriaProdutos] in table 'CategoriasProdutos'
ALTER TABLE [dbo].[CategoriasProdutos]
ADD CONSTRAINT [PK_CategoriasProdutos]
    PRIMARY KEY CLUSTERED ([CodigoCategoriaProdutos] ASC);
GO

-- Creating primary key on [CodigoEmpresa] in table 'Empresas'
ALTER TABLE [dbo].[Empresas]
ADD CONSTRAINT [PK_Empresas]
    PRIMARY KEY CLUSTERED ([CodigoEmpresa] ASC);
GO

-- Creating primary key on [CodigoPessoa] in table 'Pessoas'
ALTER TABLE [dbo].[Pessoas]
ADD CONSTRAINT [PK_Pessoas]
    PRIMARY KEY CLUSTERED ([CodigoPessoa] ASC);
GO

-- Creating primary key on [CodigoTelefone] in table 'Telefones'
ALTER TABLE [dbo].[Telefones]
ADD CONSTRAINT [PK_Telefones]
    PRIMARY KEY CLUSTERED ([CodigoTelefone] ASC);
GO

-- Creating primary key on [CodigoEndereco] in table 'Enderecos'
ALTER TABLE [dbo].[Enderecos]
ADD CONSTRAINT [PK_Enderecos]
    PRIMARY KEY CLUSTERED ([CodigoEndereco] ASC);
GO

-- Creating primary key on [CodigoUF] in table 'UFs'
ALTER TABLE [dbo].[UFs]
ADD CONSTRAINT [PK_UFs]
    PRIMARY KEY CLUSTERED ([CodigoUF] ASC);
GO

-- Creating primary key on [CodigoCidade] in table 'Cidades'
ALTER TABLE [dbo].[Cidades]
ADD CONSTRAINT [PK_Cidades]
    PRIMARY KEY CLUSTERED ([CodigoCidade] ASC);
GO

-- Creating primary key on [CodigoPais] in table 'Pais'
ALTER TABLE [dbo].[Pais]
ADD CONSTRAINT [PK_Pais]
    PRIMARY KEY CLUSTERED ([CodigoPais] ASC);
GO

-- Creating primary key on [CodigoTipoEndereco] in table 'TiposEnderecos'
ALTER TABLE [dbo].[TiposEnderecos]
ADD CONSTRAINT [PK_TiposEnderecos]
    PRIMARY KEY CLUSTERED ([CodigoTipoEndereco] ASC);
GO

-- Creating primary key on [CodigoTiposTelefones] in table 'TiposTelefone'
ALTER TABLE [dbo].[TiposTelefone]
ADD CONSTRAINT [PK_TiposTelefone]
    PRIMARY KEY CLUSTERED ([CodigoTiposTelefones] ASC);
GO

-- Creating primary key on [CodigoUnidadeMedida] in table 'UnidadesMedidas'
ALTER TABLE [dbo].[UnidadesMedidas]
ADD CONSTRAINT [PK_UnidadesMedidas]
    PRIMARY KEY CLUSTERED ([CodigoUnidadeMedida] ASC);
GO

-- Creating primary key on [CodigoProduto], [CodigoEmpresa] in table 'ValoresVenda'
ALTER TABLE [dbo].[ValoresVenda]
ADD CONSTRAINT [PK_ValoresVenda]
    PRIMARY KEY CLUSTERED ([CodigoProduto], [CodigoEmpresa] ASC);
GO

-- Creating primary key on [CodigoCotacao] in table 'Cotacoes'
ALTER TABLE [dbo].[Cotacoes]
ADD CONSTRAINT [PK_Cotacoes]
    PRIMARY KEY CLUSTERED ([CodigoCotacao] ASC);
GO

-- Creating primary key on [CodigoEmpresa], [CodigoCotacao] in table 'Propostas'
ALTER TABLE [dbo].[Propostas]
ADD CONSTRAINT [PK_Propostas]
    PRIMARY KEY CLUSTERED ([CodigoEmpresa], [CodigoCotacao] ASC);
GO

-- Creating primary key on [CodigoCotacao] in table 'Vendas'
ALTER TABLE [dbo].[Vendas]
ADD CONSTRAINT [PK_Vendas]
    PRIMARY KEY CLUSTERED ([CodigoCotacao] ASC);
GO

-- Creating primary key on [CodigoRepresentante] in table 'Representantes'
ALTER TABLE [dbo].[Representantes]
ADD CONSTRAINT [PK_Representantes]
    PRIMARY KEY CLUSTERED ([CodigoRepresentante] ASC);
GO

-- Creating primary key on [CodigoMensagemCotacao] in table 'MensagensCotacoes'
ALTER TABLE [dbo].[MensagensCotacoes]
ADD CONSTRAINT [PK_MensagensCotacoes]
    PRIMARY KEY CLUSTERED ([CodigoMensagemCotacao] ASC);
GO

-- Creating primary key on [CodigoEntrega] in table 'Entregas'
ALTER TABLE [dbo].[Entregas]
ADD CONSTRAINT [PK_Entregas]
    PRIMARY KEY CLUSTERED ([CodigoEntrega] ASC);
GO

-- Creating primary key on [CodigoMensagemEmpresa] in table 'MensagensEmpresas'
ALTER TABLE [dbo].[MensagensEmpresas]
ADD CONSTRAINT [PK_MensagensEmpresas]
    PRIMARY KEY CLUSTERED ([CodigoMensagemEmpresa] ASC);
GO

-- Creating primary key on [CodigoTeste] in table 'Testes'
ALTER TABLE [dbo].[Testes]
ADD CONSTRAINT [PK_Testes]
    PRIMARY KEY CLUSTERED ([CodigoTeste] ASC);
GO

-- Creating primary key on [CodigoTipoTeste] in table 'TipoTestes'
ALTER TABLE [dbo].[TipoTestes]
ADD CONSTRAINT [PK_TipoTestes]
    PRIMARY KEY CLUSTERED ([CodigoTipoTeste] ASC);
GO

-- Creating primary key on [CodigoEmpresa] in table 'Empresas_Transportadora'
ALTER TABLE [dbo].[Empresas_Transportadora]
ADD CONSTRAINT [PK_Empresas_Transportadora]
    PRIMARY KEY CLUSTERED ([CodigoEmpresa] ASC);
GO

-- Creating primary key on [Empresas_CodigoEmpresa], [Produtos_CodigoProduto] in table 'EmpresaProduto'
ALTER TABLE [dbo].[EmpresaProduto]
ADD CONSTRAINT [PK_EmpresaProduto]
    PRIMARY KEY NONCLUSTERED ([Empresas_CodigoEmpresa], [Produtos_CodigoProduto] ASC);
GO

-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------

-- Creating foreign key on [CodigoCategoriaPai] in table 'CategoriasProdutos'
ALTER TABLE [dbo].[CategoriasProdutos]
ADD CONSTRAINT [FK_CategoriaProdutoCategoriaProduto]
    FOREIGN KEY ([CodigoCategoriaPai])
    REFERENCES [dbo].[CategoriasProdutos]
        ([CodigoCategoriaProdutos])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_CategoriaProdutoCategoriaProduto'
CREATE INDEX [IX_FK_CategoriaProdutoCategoriaProduto]
ON [dbo].[CategoriasProdutos]
    ([CodigoCategoriaPai]);
GO

-- Creating foreign key on [CodigoCategoriaProduto] in table 'Produtos'
ALTER TABLE [dbo].[Produtos]
ADD CONSTRAINT [FK_ProdutoCategoriaProduto]
    FOREIGN KEY ([CodigoCategoriaProduto])
    REFERENCES [dbo].[CategoriasProdutos]
        ([CodigoCategoriaProdutos])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_ProdutoCategoriaProduto'
CREATE INDEX [IX_FK_ProdutoCategoriaProduto]
ON [dbo].[Produtos]
    ([CodigoCategoriaProduto]);
GO

-- Creating foreign key on [EmpresaCodigoEmpresa] in table 'Telefones'
ALTER TABLE [dbo].[Telefones]
ADD CONSTRAINT [FK_TelefoneEmpresa]
    FOREIGN KEY ([EmpresaCodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_TelefoneEmpresa'
CREATE INDEX [IX_FK_TelefoneEmpresa]
ON [dbo].[Telefones]
    ([EmpresaCodigoEmpresa]);
GO

-- Creating foreign key on [CodigoPessoa] in table 'Telefones'
ALTER TABLE [dbo].[Telefones]
ADD CONSTRAINT [FK_PessoaTelefone]
    FOREIGN KEY ([CodigoPessoa])
    REFERENCES [dbo].[Pessoas]
        ([CodigoPessoa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_PessoaTelefone'
CREATE INDEX [IX_FK_PessoaTelefone]
ON [dbo].[Telefones]
    ([CodigoPessoa]);
GO

-- Creating foreign key on [CodigoUF] in table 'Cidades'
ALTER TABLE [dbo].[Cidades]
ADD CONSTRAINT [FK_UFCidade]
    FOREIGN KEY ([CodigoUF])
    REFERENCES [dbo].[UFs]
        ([CodigoUF])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_UFCidade'
CREATE INDEX [IX_FK_UFCidade]
ON [dbo].[Cidades]
    ([CodigoUF]);
GO

-- Creating foreign key on [CodigoCidade] in table 'Enderecos'
ALTER TABLE [dbo].[Enderecos]
ADD CONSTRAINT [FK_CidadeEndereco]
    FOREIGN KEY ([CodigoCidade])
    REFERENCES [dbo].[Cidades]
        ([CodigoCidade])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_CidadeEndereco'
CREATE INDEX [IX_FK_CidadeEndereco]
ON [dbo].[Enderecos]
    ([CodigoCidade]);
GO

-- Creating foreign key on [CodigoEmpresa] in table 'Enderecos'
ALTER TABLE [dbo].[Enderecos]
ADD CONSTRAINT [FK_EnderecoEmpresa]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EnderecoEmpresa'
CREATE INDEX [IX_FK_EnderecoEmpresa]
ON [dbo].[Enderecos]
    ([CodigoEmpresa]);
GO

-- Creating foreign key on [CodigoPais] in table 'UFs'
ALTER TABLE [dbo].[UFs]
ADD CONSTRAINT [FK_PaisUF]
    FOREIGN KEY ([CodigoPais])
    REFERENCES [dbo].[Pais]
        ([CodigoPais])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_PaisUF'
CREATE INDEX [IX_FK_PaisUF]
ON [dbo].[UFs]
    ([CodigoPais]);
GO

-- Creating foreign key on [CodigoTipoEndereco] in table 'Enderecos'
ALTER TABLE [dbo].[Enderecos]
ADD CONSTRAINT [FK_TipoEnderecoEndereco]
    FOREIGN KEY ([CodigoTipoEndereco])
    REFERENCES [dbo].[TiposEnderecos]
        ([CodigoTipoEndereco])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_TipoEnderecoEndereco'
CREATE INDEX [IX_FK_TipoEnderecoEndereco]
ON [dbo].[Enderecos]
    ([CodigoTipoEndereco]);
GO

-- Creating foreign key on [CodigoTiposTelefones] in table 'Telefones'
ALTER TABLE [dbo].[Telefones]
ADD CONSTRAINT [FK_TipoTelefoneTelefone]
    FOREIGN KEY ([CodigoTiposTelefones])
    REFERENCES [dbo].[TiposTelefone]
        ([CodigoTiposTelefones])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_TipoTelefoneTelefone'
CREATE INDEX [IX_FK_TipoTelefoneTelefone]
ON [dbo].[Telefones]
    ([CodigoTiposTelefones]);
GO

-- Creating foreign key on [CodigoUnidadeMedida] in table 'Produtos'
ALTER TABLE [dbo].[Produtos]
ADD CONSTRAINT [FK_UnidadeMedidaProduto]
    FOREIGN KEY ([CodigoUnidadeMedida])
    REFERENCES [dbo].[UnidadesMedidas]
        ([CodigoUnidadeMedida])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_UnidadeMedidaProduto'
CREATE INDEX [IX_FK_UnidadeMedidaProduto]
ON [dbo].[Produtos]
    ([CodigoUnidadeMedida]);
GO

-- Creating foreign key on [Empresas_CodigoEmpresa] in table 'EmpresaProduto'
ALTER TABLE [dbo].[EmpresaProduto]
ADD CONSTRAINT [FK_EmpresaProduto_Empresa]
    FOREIGN KEY ([Empresas_CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [Produtos_CodigoProduto] in table 'EmpresaProduto'
ALTER TABLE [dbo].[EmpresaProduto]
ADD CONSTRAINT [FK_EmpresaProduto_Produto]
    FOREIGN KEY ([Produtos_CodigoProduto])
    REFERENCES [dbo].[Produtos]
        ([CodigoProduto])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EmpresaProduto_Produto'
CREATE INDEX [IX_FK_EmpresaProduto_Produto]
ON [dbo].[EmpresaProduto]
    ([Produtos_CodigoProduto]);
GO

-- Creating foreign key on [CodigoProduto] in table 'ValoresVenda'
ALTER TABLE [dbo].[ValoresVenda]
ADD CONSTRAINT [FK_ProdutoValorVenda]
    FOREIGN KEY ([CodigoProduto])
    REFERENCES [dbo].[Produtos]
        ([CodigoProduto])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [CodigoEmpresa] in table 'ValoresVenda'
ALTER TABLE [dbo].[ValoresVenda]
ADD CONSTRAINT [FK_EmpresaValorVenda]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EmpresaValorVenda'
CREATE INDEX [IX_FK_EmpresaValorVenda]
ON [dbo].[ValoresVenda]
    ([CodigoEmpresa]);
GO

-- Creating foreign key on [CodigoEmpresa] in table 'Cotacoes'
ALTER TABLE [dbo].[Cotacoes]
ADD CONSTRAINT [FK_EmpresaCotacao]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EmpresaCotacao'
CREATE INDEX [IX_FK_EmpresaCotacao]
ON [dbo].[Cotacoes]
    ([CodigoEmpresa]);
GO

-- Creating foreign key on [CodigoProduto] in table 'Cotacoes'
ALTER TABLE [dbo].[Cotacoes]
ADD CONSTRAINT [FK_ProdutoCotacao]
    FOREIGN KEY ([CodigoProduto])
    REFERENCES [dbo].[Produtos]
        ([CodigoProduto])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_ProdutoCotacao'
CREATE INDEX [IX_FK_ProdutoCotacao]
ON [dbo].[Cotacoes]
    ([CodigoProduto]);
GO

-- Creating foreign key on [CodigoEmpresa] in table 'Propostas'
ALTER TABLE [dbo].[Propostas]
ADD CONSTRAINT [FK_EmpresaProposta]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [CodigoCotacao] in table 'Propostas'
ALTER TABLE [dbo].[Propostas]
ADD CONSTRAINT [FK_CotacaoProposta]
    FOREIGN KEY ([CodigoCotacao])
    REFERENCES [dbo].[Cotacoes]
        ([CodigoCotacao])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_CotacaoProposta'
CREATE INDEX [IX_FK_CotacaoProposta]
ON [dbo].[Propostas]
    ([CodigoCotacao]);
GO

-- Creating foreign key on [CodigoCotacao] in table 'Vendas'
ALTER TABLE [dbo].[Vendas]
ADD CONSTRAINT [FK_CotacaoVenda]
    FOREIGN KEY ([CodigoCotacao])
    REFERENCES [dbo].[Cotacoes]
        ([CodigoCotacao])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [CodigoPessoa] in table 'Vendas'
ALTER TABLE [dbo].[Vendas]
ADD CONSTRAINT [FK_RepresentanteVenda]
    FOREIGN KEY ([CodigoPessoa])
    REFERENCES [dbo].[Representantes]
        ([CodigoRepresentante])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_RepresentanteVenda'
CREATE INDEX [IX_FK_RepresentanteVenda]
ON [dbo].[Vendas]
    ([CodigoPessoa]);
GO

-- Creating foreign key on [CodigoPessoa] in table 'Propostas'
ALTER TABLE [dbo].[Propostas]
ADD CONSTRAINT [FK_RepresentanteProposta]
    FOREIGN KEY ([CodigoPessoa])
    REFERENCES [dbo].[Representantes]
        ([CodigoRepresentante])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_RepresentanteProposta'
CREATE INDEX [IX_FK_RepresentanteProposta]
ON [dbo].[Propostas]
    ([CodigoPessoa]);
GO

-- Creating foreign key on [CodigoPessoa] in table 'Cotacoes'
ALTER TABLE [dbo].[Cotacoes]
ADD CONSTRAINT [FK_RepresentanteCotacao]
    FOREIGN KEY ([CodigoPessoa])
    REFERENCES [dbo].[Representantes]
        ([CodigoRepresentante])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_RepresentanteCotacao'
CREATE INDEX [IX_FK_RepresentanteCotacao]
ON [dbo].[Cotacoes]
    ([CodigoPessoa]);
GO

-- Creating foreign key on [CodigoPessoa] in table 'Representantes'
ALTER TABLE [dbo].[Representantes]
ADD CONSTRAINT [FK_PessoaRepresentante]
    FOREIGN KEY ([CodigoPessoa])
    REFERENCES [dbo].[Pessoas]
        ([CodigoPessoa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_PessoaRepresentante'
CREATE INDEX [IX_FK_PessoaRepresentante]
ON [dbo].[Representantes]
    ([CodigoPessoa]);
GO

-- Creating foreign key on [CodigoEmpresa] in table 'Representantes'
ALTER TABLE [dbo].[Representantes]
ADD CONSTRAINT [FK_EmpresaRepresentante]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EmpresaRepresentante'
CREATE INDEX [IX_FK_EmpresaRepresentante]
ON [dbo].[Representantes]
    ([CodigoEmpresa]);
GO

-- Creating foreign key on [CodigoEnderecoEntrega] in table 'Vendas'
ALTER TABLE [dbo].[Vendas]
ADD CONSTRAINT [FK_EnderecoVenda]
    FOREIGN KEY ([CodigoEnderecoEntrega])
    REFERENCES [dbo].[Enderecos]
        ([CodigoEndereco])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EnderecoVenda'
CREATE INDEX [IX_FK_EnderecoVenda]
ON [dbo].[Vendas]
    ([CodigoEnderecoEntrega]);
GO

-- Creating foreign key on [CotacaoCodigoCotacao] in table 'MensagensCotacoes'
ALTER TABLE [dbo].[MensagensCotacoes]
ADD CONSTRAINT [FK_CotacaoMensagemCotacao]
    FOREIGN KEY ([CotacaoCodigoCotacao])
    REFERENCES [dbo].[Cotacoes]
        ([CodigoCotacao])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_CotacaoMensagemCotacao'
CREATE INDEX [IX_FK_CotacaoMensagemCotacao]
ON [dbo].[MensagensCotacoes]
    ([CotacaoCodigoCotacao]);
GO

-- Creating foreign key on [EntregaCodigoEntrega] in table 'Cotacoes'
ALTER TABLE [dbo].[Cotacoes]
ADD CONSTRAINT [FK_EntregaCotacao]
    FOREIGN KEY ([EntregaCodigoEntrega])
    REFERENCES [dbo].[Entregas]
        ([CodigoEntrega])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EntregaCotacao'
CREATE INDEX [IX_FK_EntregaCotacao]
ON [dbo].[Cotacoes]
    ([EntregaCodigoEntrega]);
GO

-- Creating foreign key on [TransportadoraCodigoEmpresa] in table 'Entregas'
ALTER TABLE [dbo].[Entregas]
ADD CONSTRAINT [FK_TransportadoraEntrega]
    FOREIGN KEY ([TransportadoraCodigoEmpresa])
    REFERENCES [dbo].[Empresas_Transportadora]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_TransportadoraEntrega'
CREATE INDEX [IX_FK_TransportadoraEntrega]
ON [dbo].[Entregas]
    ([TransportadoraCodigoEmpresa]);
GO

-- Creating foreign key on [CodigoEmpresa] in table 'MensagensEmpresas'
ALTER TABLE [dbo].[MensagensEmpresas]
ADD CONSTRAINT [FK_EmpresaMensagemEmpresa]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_EmpresaMensagemEmpresa'
CREATE INDEX [IX_FK_EmpresaMensagemEmpresa]
ON [dbo].[MensagensEmpresas]
    ([CodigoEmpresa]);
GO

-- Creating foreign key on [CodigoPessoaComprador] in table 'MensagensCotacoes'
ALTER TABLE [dbo].[MensagensCotacoes]
ADD CONSTRAINT [FK_PessoaMensagemCotacao]
    FOREIGN KEY ([CodigoPessoaComprador])
    REFERENCES [dbo].[Pessoas]
        ([CodigoPessoa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_PessoaMensagemCotacao'
CREATE INDEX [IX_FK_PessoaMensagemCotacao]
ON [dbo].[MensagensCotacoes]
    ([CodigoPessoaComprador]);
GO

-- Creating foreign key on [CodigoPessoaAtacadista] in table 'MensagensCotacoes'
ALTER TABLE [dbo].[MensagensCotacoes]
ADD CONSTRAINT [FK_PessoaMensagemCotacao1]
    FOREIGN KEY ([CodigoPessoaAtacadista])
    REFERENCES [dbo].[Pessoas]
        ([CodigoPessoa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_PessoaMensagemCotacao1'
CREATE INDEX [IX_FK_PessoaMensagemCotacao1]
ON [dbo].[MensagensCotacoes]
    ([CodigoPessoaAtacadista]);
GO

-- Creating foreign key on [CodigoTipoTeste] in table 'Testes'
ALTER TABLE [dbo].[Testes]
ADD CONSTRAINT [FK_TipoTesteTeste]
    FOREIGN KEY ([CodigoTipoTeste])
    REFERENCES [dbo].[TipoTestes]
        ([CodigoTipoTeste])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_TipoTesteTeste'
CREATE INDEX [IX_FK_TipoTesteTeste]
ON [dbo].[Testes]
    ([CodigoTipoTeste]);
GO

-- Creating foreign key on [CodigoEmpresa] in table 'Empresas_Transportadora'
ALTER TABLE [dbo].[Empresas_Transportadora]
ADD CONSTRAINT [FK_Transportadora_inherits_Empresa]
    FOREIGN KEY ([CodigoEmpresa])
    REFERENCES [dbo].[Empresas]
        ([CodigoEmpresa])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------